Stored Procedure (Saklı Prosedür), kodun tekrar tekrar kullanılabilmesi için kaydedilebilen SQL kodu hazırlanmıştır.
Bu nedenle, tekrar tekrar yazdığınız bir SQL sorgunuz varsa, bunu saklı prosedür olarak kaydedin ve çalıştırmak için çağırın.
Ayrıca, saklı yordamın iletilen parametre değerleri üzerinde işlem yapabilmesi için, saklı yordama parametreleri de iletebilirsiniz.
CREATE PROCEDURE procedure_name
AS
sql_statement
GO
EXEC procedure_name
Aşağıda "Northwind" veritabanının "Customers" ("Müşteriler") tablosundan bir örnek verilmiştir:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Aşağıdaki SQL sorgusu, Müşteriler tablosundaki tüm kayıtları seçen "SelectAllCustomers" adlı bir saklı yordam oluşturur:
CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO
Yukarıdaki saklı yordamı şu şekilde yürütelim:
EXEC SelectAllCustomers
Aşağıdaki SQL sorgusu, Müşteriler tablosundan belirli bir şehirdeki müşterileri seçen bir saklı yordam oluşturur:
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO
Yukarıdaki saklı yordamı şu şekilde yürütelim:
EXEC SelectAllCustomers @City = 'London'
Birden fazla parametreyi yapılandırmak, yani her parametreyi ve veri tipini aşağıda gösterildiği gibi virgülle ayırarak listelemek çok kolaydır.
Aşağıdaki SQL ifadesi, Müşteriler tablosundan belirli bir şehirdeki belirli bir posta koduna sahip müşterileri seçen bir saklı yordam oluşturur:
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO
Yukarıdaki saklı yordamı şu şekilde yürütelim:
EXEC SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP'